var fractionToDecimal = function (numerator, denominator) {
  // 首先，对特殊情况进行处理
  if (denominator == 0) return "";
  if (numerator == 0) return "0";

  let res = [];
  // 判断符号
  if ((denominator > 0) ^ (numerator > 0)) res.push("-");
  // 正数
  let denom = Math.abs(denominator);
  let numer = Math.abs(numerator);

  // 模仿算法手除过程，每次得到的商存起来，
  let quotient = Math.floor(numer / denom);
  res.push(quotient);
  let remainder = numer % denom;
  if (!remainder) return res.join("");
  res.push("."); // 插入小数点
  let map = new Map();

  // 小数部分
  while (remainder && map.has(remainder) === false) {
    map.set(remainder, res.length);
    remainder *= 10;
    res.push(Math.floor(remainder / denom));
    remainder %= denom;
  }

  if (map.has(remainder)) {
    res.push(")");
    let index = map.get(remainder);
    res.splice(index, 0, "(");
  }
  return res.join("");
};
